package com.hezhou.jenkins.my_jenkins_test.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * ---------------------------
 * (Producter4Direct) 设置生产者的交换机为Topic交换机
 * ---------------------------
 *
 * @Author: [hezhou]
 * @Date: 2020/4/24
 * @Version: [1.0.1]
 * ---------------------------
 */
public class Producter4Topic {
    public static void main(String[] args) throws IOException, TimeoutException {
        /**
         *  1.创建出连接工厂对象
         *  setHost 地址
         *  setPort 端口
         *  setVirtualHost 虚拟对象  默认 /
         */
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.121.130");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        /**
         * 2.通过连接工厂创建出连接对象
         */
        Connection connection = factory.newConnection();
        /**
         * 3.通过连接对象创建出channel、
         */
        Channel channel = connection.createChannel();
        /**
         * 4.通过channel发布消息
         * 第一个参数 交换机的名称 默认交换机<"">
         * 第二个参数 由键
         * 第三个参数 消息额外的参数
         * 第四个参数 消息的内容
         */
        //定义一个交换机的名字
        String exchangeName = "test_topic";
        String routingKey = "test.topic";
        for (int i=0;i<5;i++) {
            String msg = "hello rabbitmq for topic exchange!"+i;
            channel.basicPublish(exchangeName,routingKey,null,msg.getBytes());
        }

        /**
         * 5.释放资源 channel和connection
         */
        channel.close();
        connection.close();

    }
}
